// 版权所有2010 Go作者。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package mime

import (
	"strings"
)

// IST特别报告符文是否属于RFC 
// 1521和RFC 2045定义的“特殊”。
func isTSpecial(r rune) bool {
	return strings.ContainsRune(`()<>@,;:\"/[]?=`, r)
}

// isTokenChar报告符文是否在RFC 
// 1521和RFC 2045定义的“令牌”中。
func isTokenChar(r rune) bool {
	// 标记：=1*<除空格、CTLs、
	// 或tspecials>
	return r > 0x20 && r < 0x7f && !isTSpecial(r)
}

// 之外的任何（US-ASCII）字符。isToken报告s是否为RFC 1521 
// 和RFC 2045定义的“标记”。
func isToken(s string) bool {
	if s == "" {
		return false
	}
	return strings.IndexFunc(s, isNotTokenChar) < 0
}
